#ifndef XLCOMM_BASE_DEMOSINGLETON_H_
#define XLCOMM_BASE_DEMOSINGLETON_H_

#include "xlcomm/define.h"
#include "xlcomm/noncopyable.h"

namespace xlcomm {

// 线程安全的示例单例类
class DemoSingleton : noncopyable {
 public:
  // // 获取实例指针
  // static DemoSingleton* Instance() {
  //   static DemoSingleton* ptr = new DemoSingleton();
  //   return ptr;
  // }
  // 两种方式选择一种

  // 获取实例引用
  static DemoSingleton& Instance() {
    static DemoSingleton obj;
    return obj;
  }

 private:
  // 构造函数，不允许外部调用
  DemoSingleton() {}
  // 析够函数，不允许外部调用
  ~DemoSingleton() {}
};

}  // namespace xlcomm

#endif  // XLCOMM_BASE_DEMOSINGLETON_H_